package com.richard.demo.controller;

import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;

/**
 * 文件上传控制器
 * 用于处理客户端上传的文件
 */
@Slf4j
@RestController
public class FileUploadController {

    /**
     * 处理文件上传请求
     *
     * @return 返回文件上传结果信息
     * @paramfiles 用户上传的文件列表
     */
    @PostMapping("/upload")
    public String upload(MultipartFile file_name, HttpServletRequest request) {
        System.out.println(file_name.getOriginalFilename());
        if (file_name.isEmpty()) {
            return "上传的是空文件";
        }
        try {

            SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmss");
            String date = format.format(new Date());
            String real_path = request.getServletContext().getRealPath("upload");
            System.out.println(real_path);
            file_name.transferTo(new File("D://" + date+UUID.randomUUID() + ".jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(file_name.getOriginalFilename());
        return "上传成功";
    }

    /**
     * 处理文件上传的方法。
     *
     * @param file_name 一个MultipartFile数组，代表上传的文件集合。
     * @param request HttpServletRequest对象，用于获取请求相关信息。
     * @return 返回一个字符串，表示上传操作的结果。
     */
    @PostMapping("/upload_files")
    public String enters(MultipartFile[] file_name, HttpServletRequest request) {
        // 检查上传的文件数组是否为空或长度为0，若为空则返回提示信息
        if (file_name == null || file_name.length == 0) {
            return "请选择文件";
        }
        // 打印上传文件的数量
        System.out.println(file_name.length);
        // 遍历上传的文件数组，并逐个处理上传
        for (int i = 0; i < file_name.length; i++){
            upload(file_name[i], request);
        }
        // 上传完成后返回收到文件的提示信息
        return "收到上传到文件";
    }
}
